package cc.ucanuup.service.base.dao;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import cc.ucanuup.service.base.entity.MasterCode;



/**
 * 文件名： com.bozhon.service.base.datamanager.MasterCodeJPA.java
 * 作者：   WenBin
 * 日期：   2017年10月26日
 * 功能说明： 数据字典服务类
 * =========================================================
 * 修改记录：
 * 修改作者    日期      修改内容
 * =========================================================
 *  Copyright (c) 2010-2011 .All rights reserved.
 */
@Repository
public interface MasterCodeJPA extends JpaRepository<MasterCode, String>,JpaSpecificationExecutor<MasterCode>{

	/**
	 * @Method: com.bozhon.service.base.datamanager.MasterCodeJPA.findOneByCode
	 * @Description: 通过编码code 查询对象
	 * @author: WenBin
	 * @date: 2017年11月6日
	 * @version: 1.0
	 * @param code
	 * @return
	 * MasterCode
	 * @update [日期YYYY-MM-DD] [更改人姓名][变更描述]
	 */
	@Query(value="select t from MasterCode t where t.dicCode = ?1")
	MasterCode findOneByCode(Integer code);

	/**
	 * @Method: com.bozhon.service.base.datamanager.MasterCodeJPA.findActiveMasterCodeByFCode
	 * @Description: 通过code 查询所有子字典
	 * @author: WenBin
	 * @date: 2017年11月6日
	 * @version: 1.0
	 * @param code
	 * @return
	 * List<MasterCode>
	 * @update [日期YYYY-MM-DD] [更改人姓名][变更描述]
	 */
	@Query(value="select t from MasterCode t where t.fatherId = (select t1.id from MasterCode t1 where t1.dicCode = ?1)")
	List<MasterCode>  findMasterCodeByFCode(Integer code);

	/**
	 * @Method: com.bozhon.service.base.datamanager.MasterCodeJPA.findMasterCodeByFCode
	 * @Description: 通过code 查询所有激活的子字典
	 * @author: WenBin
	 * @date: 2017年11月6日
	 * @version: 1.0
	 * @param code
	 * @return
	 * List<MasterCode>
	 * @update [日期YYYY-MM-DD] [更改人姓名][变更描述]
	 */
	@Query(value="select t from MasterCode t where t.status = 1 and t.deleted = 0 and "
			+ " t.fatherId = (select t1.id from MasterCode t1 where t.status = 1 and t.deleted = 0 and t1.dicCode = ?1 )")
	List<MasterCode> findActiveMasterCodeByFCode(Integer code);

	/**
	 * @Method: com.bozhon.srm.service.base.datamanager.MasterCodeJPA.findMaxCode
	 * @Description:  查找最大的一个id
	 * @author: WenBin
	 * @date: 2018年2月6日
	 * @version: 1.0
	 * @return
	 * Integer
	 * @update [日期YYYY-MM-DD] [更改人姓名][变更描述]
	 */
	@Query(value="select max(t.dicCode)+1 from MasterCode t ")
	Integer findMaxCode();


}
